#version 330 core
// 定义多渲染目标输出布局
layout (location = 0) out vec3 gPosition;    // 世界空间位置
layout (location = 1) out vec3 gNormal;      // 法线向量
layout (location = 2) out vec4 gAlbedoSpec;  // 漫反射颜色(RGB)+高光强度(Alpha)

in vec2 TexCoords;    // 纹理坐标
in vec3 FragPos;      // 片段世界坐标
in vec3 Normal;       // 片段法线

struct Material
{
    sampler2D texture_diffuse1;   // 漫反射纹理
    sampler2D texture_specular1;  // 高光纹理
    sampler2D texture_normal1;
};
uniform Material material;

void main()
{    
    gPosition = FragPos;  // 写入世界坐标到G缓冲位置通道
    gNormal = normalize(Normal);  // 法线向量归一化后写入
    gAlbedoSpec.rgb = texture(material.texture_diffuse1, TexCoords).rgb;  // 漫反射颜色
    gAlbedoSpec.a = texture(material.texture_specular1, TexCoords).r;     // 高光强度存入Alpha通道
}